de tipo alfanumérico: se expresan ya sea entre apóstrofes (') o entre comillas (") He aquí dos ejemplos de series válidas:
| "Es cierto" |
| 'una "serie" particular' |
de tipo numérico: expresadas con un decimal si es necesario. He aquí dos ejemplos de series válidas:
| -2.5 |
| 123000 |
de tipo fecha: expresadas en forma día/mes/año. Es importante tener en cuenta que el año se tiene que expresar obligatoriamente en 4 cifras. He aquí dos ejemplos de series válidas:
| [15/3/2002] |
| [21/05/1819] |
de tipo lógico: se confunde con las constantes numéricas : 1 ( y por extensión todo valor no nulo) equivalente a Verdadero, 0 equivale a Falso.
Los operadores válidos son los siguientes:
| + | adición de dos números, una fecha y un número de días, o concatenación de dos cadenas de caracteres. |
| - | sustracción de dos números, una fecha y un número de días, o concatenación de dos cadenas de caracteres insertando un espacio en tres las dos cadenas. |
| * | multiplicación de dos números. |
| / | división de dos números. |
| ^ | elevado a una potencia. |
| < <= > >= <> | operadores de comparación |
|
and or xor not | operadores lógicos. Pueden expresarse de forma abreviada & | ? ! |
Por otro lado, existe la posibilidad de utilizar los paréntesis con nivel de entrelazado ilimitado.
Una variable se expresa generalmente de la siguiente manera:
| [ clase ] nomvar ( índice ) |
Se pueden definir las siguientes variables:
| [F:BPC]BPCNAME |
| MA_VARIABLE |
| ELEMENT(33) |
El nombre de la variable nomvar se expresa en forma de letra y/o de cifras. El primer caracter es siempre una letra. También admite el subrayado. La longitud de un nombre de variable está limitada a 12 caracteres. Se autorizan todos los nombres, salvo ciertas palabras clave reservadas al lenguaje (File, Until, o Commit forman parte de estas palabras clave). Cuando se teclea un nombre de variable en letras minúsculas, se transforma automáticamente en letras mayúsculas, salvo que se trate de una palabra clave.
Se pueden dimensionar ciertas variables, es decir que corresponden a las tablas de elementos (se admiten de 1 a 4 dimensiones). En ese caso se expresan el/los índices en forma de expresiones numéricas, separados por comas si hay varias, entre paréntesis (por ejemplo, M_TB(1,2,8) es una expresión válida).
Una clase corresponde a un conjunto de variables ligadas a un contexto. Las clases más comunes son las siguientes:
[V]: clase de variables globales. Una variable de este tipo está ligada a la sesión ADONIX. Una vez creada, permanece accesible mientras que no se destruya o mientras que la sesión ADONIX no se acabe. Su declaración se realiza con la ayuda de instrucciones dedicadas (según el tipo, se utilizan las instrucciones Integer, Decimal, Char, Date, Libelle, Shortint, Float, Double).
[L]: clase de variables locales. Es asociada a una imbricación o anidamiento de subprograma (las instrucciones Call crean un nuevo tipo de variables locales que ocultan el tipo anterior). La declaración de este tipo de variables se realiza de igual forma que las variables precedentes, pero precedida de la palabra clave Local.
[C]: clase de variables de tipo contador. Se trata de variables comunes a todos los puestos de un dossier. Su creación se realiza mediante una función de desarrollo dedicada.
[F:abv] o [abv]: se trata de la clase de variables ligadas a una tabla declarada por la instrucción File. Aquí se encuentran los valores de registro actuales.
[M:abv] o [abv]: se trata de la clase de variables ligadas a una pantalla de modificación declarada por la instrucción Mask. Se encuentran los valores introducidos y que pueden mostrarse (cada pestaña de una pantalla se considera como una máscara).
La clase no es obligatoria, sin embargo hay reglas que permiten conocer la clase por defecto.
Existe un conjunto de variables denominadas sistema gestionadas por adonix. Mientras que las otras variables se transforman durante la introducción en mayúsculas, aquellas variables que forman parte de las palabras clave del lenguaje se marcan en minúsculas. He aquí algunas variables del sistema que se utilizan (lista no exhaustiva):
Nombre | Tipo | Definición |
nomap | serie | nombre del dossier actual |
datesyst | fecha | fecha del sistema modificable |
adxdir | serie | repertorio de la base adonix |
nolign | numérico | número de línea actual |
fstat | numérico | norma de regreso tras la lectura o escritura de la tabla |
Una función se expresa mediante la forma (lista de argumentos). Existen numerosas funciones: tratamiento de series de caracteres, cálculos de fechas, funciones numéricas clásicas, funciones de truncamiento y redondeo, funciones estadísticas, etc.
A continuación se encuentra una lista de las principales funciones que se utilizan en ADONIX. En la tabla de funciones las normas de escritura son las siguientes:
v es un argumento de cualquier tipo (igual que v1,v2,v3…)
c es un argumento de tipo serie de caracteres
x es un argumento de tipo numérico
n , p, q... son argumentos de tipo entero
V es una variable
lista es una lista de variables o expresiones. En ese tipo de lista, una variable TABLO de tipo tabla, puede utilizarse de la forma TABLO(I) (solamente se toma un índice), TABLO ( se toman todos los índices), o TABLO(I J) (se toman los índices de I a J ambos incluidos).
Sintaxis | Tipo | Definición |
date$ | fecha | fecha actual |
sin(x), cos(x), tan(x) | numérico | funciones trigonométricas |
asin(x),acos(x)... | numérico | funciones trigonométricas inversas |
log(x),exp(x),ln(x) | numérico | funciones logarítmicas |
abs(x), sgn(x) | numérico | valor absoluto, signo |
ar2(x), arr(x,y) | numérico | redondea a 2 decimales, redondeo de x a y cerca |
int(x), mod(x,y) | numérico | parte entera, módulo |
len(c) | numérico | longitud de una cadena |
day(d),month(d),year(d) | numérico | extracción día, mes, año de una fecha |
dayn(d),week(d) | numérico | número de día en la semana, número de la semana |
num$(x) | serie | un número convertido en una cadena (representación decimal) |
space$(n), chr$(n) | serie | cadena compuesta de n espacios, de 1 carácter de código interno n |
string$(n,c), string$(n,x) | serie | serie compuesta de n caracteres c (o n caracteres de código x) |
day$(d), month$(d) | serie | nombre del día, nombre del mes |
addmonth(d,n) | fecha | la fecha d a la cual se añaden n meses |
eomonth(d) | fecha | el último día del mes correspondiente a la fecha d |
left$(c,n), right$(c,n) | serie | parte izquierda/derecha de una serie de n caracteres |
mid$(c,n,p), seg$(c,n,p) | serie | extracción de subseries de una determinada serie |
gdat$(n,p,q) | fecha | esquema de una fecha (n=día,p=mes,q=año) |
pat(c1,c2) | numérico | verifica la conformidad de una serie c1 a un modelo c2 (1 si es conforme, 0 si no lo es). El modelo puede incluir los meta-caracteres * (¿cualquier número de cualquier caracter), ? (un caracter cualquiera), # (una cifra cualquiera). |
min(lista), max(lista) | todos los tipos | mínimo o máximo de un conjunto de variables o valores |
sum(lista), prd(lista) | numérico | suma, producto de un conjunto de variables o valores |
avg(lista), var(lista) | numérico | media, variación de un conjunto de variables o valores |
sum(lista) | serie | concatenación de un conjunto de variables o valores de series |
uni(lista) | numérico | verificación sobre la unicidad de un conjunto de variables o valores |
find(v,lista) | numérico | búsqueda de un valor de cualquier tipo en una lista |
evalue(c) | todos los tipos | evaluación de una serie de caracteres que contiene una expresión |
format$(c,v) | serie | formatear un valor con un formato determinado c. |
toupper(c),tolower(c) | serie | transformación en minúsculas, en mayúsculas |
sigma(V=v1,v2,v3) | numérico | suma (V que varía de v1 a v2), de la expresión v3 función de V. |
Existen funciones definidas por lo creadores en desarrollo que se pueden utilizar en las expresiones calculadas mediante la expresión siguiente:
func TRAIT.FONCT (lista de argumentos)
TRAIT es el nombre del tratamient, y FONCT el nombre de la función afectada. Las funciones están documentadas en la table de los sub-programas.